package es.ucm.fdi.bdt.controller.interfaces.management;

/**
 * Gestión de servicios
 */
public interface IServiceManager {

	/**
	 * Funci�n: Ofertar servicio.
		ID: Ser01
		Prioridad: Alta.
		Estabilidad: Alta.
		Descripci�n: Ofertar un servicio para el banco de tiempo.
		Entrada: Datos del servicio: ID del usuario, categor�a/clasificaci�n, nombre del servicio, tiempo en horas del servicio, tipo presencial/online, ciudad del servicio.
		Salida: Mensaje de confirmaci�n de servicio dado de alta .
		Origen: Interfaz gr�fica.
		Destino: Sistema.
		Necesita: Estar conectado a la red, el archivo/s de servicios del sistema.
		Acci�n: Dar de alta un servicio nuevo.
		Precondici�n: Que el usuario que quiere ofrecer el servicio exista en el sistema.
		Postcondici�n: Nuevo servicio introducido en el archivo de servicios del sistema.
	 * @param datosDelServicio
	 * @return
	 */
	Object ofertarServicio(Object datosDelServicio);
	
	/**
	 * Funci�n: Demandar servicio.
		ID: Ser02
		Prioridad: Alta.
		Estabilidad: Media.
		Descripci�n: Solicitar un servicio.
		Entrada: Datos del servicio.
		Salida: Mensaje de confirmaci�n.
		Origen: Interfaz gr�fica.
		Destino: Sistema.
		Necesita: Estar conectado a la red.
		Acci�n: El sistema crear�a una entrada nueva en  un sistema de servicios.
		Precondici�n: Datos del servicio.
		Postcondici�n: -.
	 * @param datosDelServicio
	 * @return
	 */
	Object demandarServicio(Object datosDelServicio);
	
	/**
	 * Funci�n: Buscar servicio.
		ID: Ser03
		Prioridad: Alta.
		Estabilidad: Media.
		Descripci�n: Realizar una consulta sobre un tipo de oferta en la red.
		Entrada: Datos de la oferta.
		Salida: Lista de ofertas que encajan con la consulta.
		Origen: Interfaz gr�fica.
		Destino: Sistema.
		Necesita: Estar conectado a la red.
		Acci�n: El sistema devuelve una lista de ofertas.
		Precondici�n: Datos de la oferta.
		Postcondici�n: Listado de ofertas.
	 * @param datosDelServicio
	 * @return
	 */
	Object buscarServicio(Object datosDelServicio);
	
	/**
	 * Funci�n: Cancelar servicio
		ID: Ser04
		Prioridad: Alta.
		Estabilidad: Media.
		Descripci�n: Se cancela el servicio del sistema.
		Entrada: ID del acuerdo.
		Salida: Notificaci�n de �xito/fallo.
		Origen: Interfaz gr�fica.
		Destino: Sistema.
		Necesita: Estar conectado a la red, fichero de usuarios y ficheros de acuerdos.
		Acci�n: El sistema modifica la entrada correspondiente al acuerdo.
		Precondici�n: Servicio existente.
		Postcondici�n: Entrada del acuerdo modificada.
	 * 
	 * @param datosDelServicio
	 * @return
	 */
	Object cancelarServicio(Object datosDelServicio);
	
}
